package com.expert.miniapp.service;

import com.expert.miniapp.dao.ResearchExpert;
import com.github.pagehelper.PageInfo;
import java.util.List;

/**
 * 科研专家业务逻辑接口
 * 提供专家信息的业务处理功能
 */
public interface ResearchExpertService {

    /**
     * 根据专家ID获取专家详细信息
     * @param expertId 专家ID
     * @return 专家信息，如果不存在则返回null
     */
    ResearchExpert getExpertById(String expertId);

    /**
     * 根据分类获取专家列表
     * @param category 分类名称
     * @return 匹配该分类的专家列表
     */
    List<ResearchExpert> getExpertsByCategory(String category);

    /**
     * 获取所有专家列表（支持分页）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 专家分页信息
     */
    PageInfo<ResearchExpert> getAllExperts(Integer pageNum, Integer pageSize);

    /**
     * 按权重获取推荐专家列表（支持分页）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 推荐专家分页信息
     */
    PageInfo<ResearchExpert> getRecommendedExperts(Integer pageNum, Integer pageSize);

    /**
     * 模糊搜索专家（支持分页）
     * @param keyword 搜索关键词
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 搜索结果分页信息
     */
    PageInfo<ResearchExpert> searchExperts(String keyword, Integer pageNum, Integer pageSize);
}